[Amazon FSx for NetApp ONTAP] SMB暗号化とSMB署名の設定を両立できるか確認してみた

[Amazon FSx for NetApp ONTAP] SMB暗号化とSMB署名の設定を両立できるか確認してみた

SMB暗号化の強制化している場合はSMB署名を有効化しなくともよさそう
Clock Icon2024.10.08

SMB署名とSMB暗号化の設定は両立できるのか

こんにちは、のんピ(@non____97)です。

皆さんはAmazon FSx for NetApp ONTAP(以降FSxN)で、SMB署名とSMB暗号化の設定は両立できるのかと気になったことはありますか? 私はあります。

SMB署名を有効化することでメッセージの改ざんを検知することができます。

SMB 署名とは、すべての SMB メッセージには、セッション キーと AES を使用して生成された署名が含まれていることを意味します。 SMB 署名では、SMB ヘッダーにメッセージ全体のハッシュを含む署名が追加されます。 転送中にメッセージが改ざんされた場合、改ざんされたメッセージのデータは署名のハッシュと一致しません。 ハッシュには、元の送信者と本来の受信者 ID も含まれます。 署名の不一致は、可能性のある不正行為をユーザーに警告し、リレー攻撃やスプーフィング攻撃から保護するのに役立ちます。

Windows でのサーバー メッセージ ブロックの署名の概要 | Microsoft Learn

SMB署名が有効な状態で中間者攻撃を行おうとした場合のログは三井物産セキュアディレクションさんの以下記事が参考になります。

https://www.mbsd.jp/research/20190902/black-hat-usa-smb-ntlm/

SMBの暗号化も有効化している場合はどうでしょうか。

SMBの暗号化を行う際には署名も行われる認識です。Amazon FSx for Windows File Serverのドキュメントですが、データの整合性についても検証すると記載されています。

SMB 暗号化は、暗号化アルゴリズムとして AES-128-GCM または AES-128-CCM (クライアントが SMB 3.1.1 をサポートしている場合は GCM バリアントが選択されます) を使用し、SMB Kerberos セッションキーを使用した署名によるデータ整合性も提供します。AES-128-GCM を使用すると、パフォーマンスが向上します。例えば、暗号化された SMB 接続を介して大きなファイルをコピーする場合のパフォーマンスが最大 2 倍向上します。

転送時の暗号化 - Amazon FSx for Windows File Server

実際、FSxNでSMB署名とSMB暗号化の設定をどちらも有効化してみて、どのような挙動をするのか確認してみましょう。

いきなりまとめ

  • SMB暗号化とSMB署名の設定を同時に有効にすることは可能
  • ただし、SMB暗号化とSMB署名が設定上有効になっており、接続してくるセッションが暗号化された場合はセッション情報上では署名が行われていないように見える
  • SMB暗号化を有効にしていると裏側で署名が行われる
    • 使用する暗号化アルゴリズムが認証付き暗号のAES-128-GCMもしくはAES-128-CCMであるため
    • Kerberos認証でもNTLM認証でも同じ動作
  • SMB 3.1.1では事前認証の整合性によって、Session Setup ResponseおよびTree Connect RequestTree Connect Responseのパケットは署名設定が無効でも署名される
  • SMB 3.0では暗号化有効化時にAES-128-CCMが使用される
  • 明示的にSMB署名の有効化が必要なのは、SMB暗号化を有効にしていない場合
    • SMB 3未満で接続してくるクライアントが存在するなど

SMB暗号化とSMB署名の関係性をドキュメントから確認してみる

もう少し、SMB暗号化とSMB署名の関係性をドキュメントから確認してみます。

以下Microsoft公式ドキュメントによると、SMBは暗号化時にデータの検証もしてくれるようです。

SMB 暗号化は Advanced Encryption Standard (AES)-GCM および CCM アルゴリズムを使用して、データを暗号化および復号化します。 また、AES-CMAC と AES-GMAC は SMB 署名の設定に関係なく、暗号化されたファイル共有に対してデータ整合性の検証 (署名) を行います。 暗号化しないで SMB 署名を有効にしたい場合は、引き続きそのようにできます。 詳細については、「信頼できる SMB 署名を構成する」を参照してください。

SMB セキュリティ拡張機能 | Microsoft Learn

また、SMB暗号化はSMB署名と同等の改ざん防止機能を提供し、署名よりも暗号化が優先されるため、両方を要求する意味はないとも記載がありました。

SMB encryption has performance overhead and compatibility overhead, and you should balance that against SMB signing - which has better performance and tamper protection but no snooping protection – or against no use of encryption or signing at all, which has best performance but no security besides the connection authorization and pre-auth integrity protection. SMB encryption supersedes SMB signing and supplies the same level of tamper protection, meaning that if your SMC client requires signing, SMB encryption turns it off; there is no point requiring both because encryption wins.

SMB client encryption mandate now supported in Windows Insider - Microsoft Community Hub

ということで、SMB暗号化を有効化している環境においては、別途SMB署名の設定を有効化する必要がなさそうです。

実際に試してみる

SMB署名無効 × SMB暗号化無効 × SMB 3.1.1 × Kerberos認証

実際に試してみます。

まずはSMB署名無効 × SMB暗号化無効 × SMB 3.1.1 × Kerberos認証の場合です。

SMBサーバー周りの設定は以下のとおりです。

::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

::*> cifs options show

Vserver: svm

                            Client Session Timeout: 900
                              Copy Offload Enabled: true
                                Default Unix Group: -
                                 Default Unix User: pcuser
                                   Guest Unix User: -
               Are Administrators mapped to 'root': true
           Is Advanced Sparse File Support Enabled: true
                  Is Fsctl File Level Trim Enabled: true
                  Direct-Copy Copy Offload Enabled: false
                           Export Policies Enabled: false
            Grant Unix Group Permissions to Others: false
                          Is Advertise DFS Enabled: false
     Is Client Duplicate Session Detection Enabled: true
               Is Client Version Reporting Enabled: true
                                    Is DAC Enabled: false
                      Is Fake Open Support Enabled: true
                         Is Hide Dot Files Enabled: false
                              Is Large MTU Enabled: true
                             Is Local Auth Enabled: true
                 Is Local Users and Groups Enabled: true
                           Is Multichannel Enabled: false
            Is NetBIOS over TCP (port 139) Enabled: true
               Is NBNS over UDP (port 137) Enabled: false
                               Is Referral Enabled: false
             Is Search Short Names Support Enabled: false
  Is Trusted Domain Enumeration And Search Enabled: true
                        Is UNIX Extensions Enabled: false
          Is Use Junction as Reparse Point Enabled: true
    Maximum Length of Data Zeroed by One Operation: 32MB
                               Max Multiplex Count: 255
          Max Connections per Multichannel Session: 32
                 Max LIFs per Multichannel Session: 256
              Max Same User Session Per Connection: 2500
                 Max Same Tree Connect Per Session: 5000
                      Max Opens Same File Per Tree: 1000
                          Max Watches Set Per Tree: 500
                   Is Path Component Cache Enabled: true
Is Path Component Cache Symlink Resolution Enabled: true
              Path Component Cache Maximum Entries: 100000
        Path Component Cache Entry Expiration Time: 300000
      Path Component Cache Symlink Expiration Time: 300000
   Path Component Cache Maximum Session Token Size: 1000
    NT ACLs on UNIX Security Style Volumes Enabled: true
                                  Read Grants Exec: disabled
                                  Read Only Delete: disabled
                  Reported File System Sector Size: 4096
                                Restrict Anonymous: no-enumeration
                              Shadowcopy Dir Depth: 5
                                Shadowcopy Enabled: true
                                      SMB1 Enabled: false
                  Max Buffer Size for SMB1 Message: 65535
                                      SMB2 Enabled: true
                                      SMB3 Enabled: true
                                    SMB3.1 Enabled: true
            Map Null User to Windows User or Group: -
                                      WINS Servers: -
         Report Widelink as Reparse Point Versions: SMB1
                              Max Credits to Grant: 512
         Set Modebits when NFSv4_acl are Inherited: false
                       Map SID to UID on Set Owner: true
Check Share Permission for NetShareEnumAll Request: false

::*> cifs security show

Vserver: svm

                            Kerberos Clock Skew:                   5 minutes
                            Kerberos Ticket Age:                  10 hours
                           Kerberos Renewal Age:                   7 days
                           Kerberos KDC Timeout:                   3 seconds
                            Is Signing Required:               false
                Is Password Complexity Required:                true
           Use start_tls for AD LDAP connection:               false
         (DEPRECATED)-Is AES Encryption Enabled:                true
                         LM Compatibility Level:  lm-ntlm-ntlmv2-krb
                     Is SMB Encryption Required:               false
                        Client Session Security:                none
   (DEPRECATED)-SMB1 Enabled for DC Connections:               false
                SMB2 Enabled for DC Connections:      system-default
  LDAP Referral Enabled For AD LDAP connections:               false
               Use LDAPS for AD LDAP connection:               false
      Encryption is required for DC Connections:               false
   AES session key enabled for NetLogon channel:                true
    Try Channel Binding For AD LDAP Connections:                true
        Encryption Types Advertised to Kerberos:
                                          aes-256, aes-128, rc4, des

::*> cifs security show -fields is-smb-encryption-required, is-signing-required
vserver is-signing-required is-smb-encryption-required
------- ------------------- --------------------------
svm     false               false

エクスプローラーでSMBファイル共有のパスである\\SMB-SERVER.corp.non-97.net\shareにアクセスします。

この時のセッションは以下のとおりです。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436798
                   Connection ID: 239866808
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: Kerberos
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 1
                      Open Files: 0
                      Open Other: 0
                  Connected Time: 6s
                       Idle Time: 6s
                Protocol Version: SMB3_1
          Continuously Available: No
               Is Session Signed: false
                    NetBIOS Name: -
           SMB Encryption Status: unencrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: share

署名と暗号化のどちらも行われていないことが分かります。

SMB署名有効 × SMB暗号化有効 × SMB 3.1.1 × Kerberos認証

それでは、SMB署名とSMB暗号化をどちらも有効化します。

::*> cifs security modify -is-smb-encryption-required true -is-signing-required true

::*> cifs security show -fields is-smb-encryption-required, is-signing-required
vserver is-signing-required is-smb-encryption-required
------- ------------------- --------------------------
svm     true                true

この状態で再度エクスプローラーから\\SMB-SERVER.corp.non-97.net\shareにアクセスします。

セッションを確認します。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436799
                   Connection ID: 239866809
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: Kerberos
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 1
                      Open Files: 0
                      Open Other: 0
                  Connected Time: 9s
                       Idle Time: 9s
                Protocol Version: SMB3_1
          Continuously Available: No
               Is Session Signed: false
                    NetBIOS Name: -
           SMB Encryption Status: encrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: share

すると、SMB暗号化はされていますが、SMB署名はされていないようです。

パケットキャプチャからもう少し様子を見てみましょう。

1.SMB31_encrypt_sign_kerb_pcapng_request.png

Negotiate Protocol Requestのパケットを確認すると、使用できる暗号化アルゴリズムSMB2_ENCRYPTION_CAPABILITIESおよび、署名アルゴリズムSMB2_SIGNING_CAPABILITIESを投げていました。それぞれの詳細は以下Microsoft公式ドキュメントをご覧ください。

https://learn.microsoft.com/ja-jp/openspecs/windows_protocols/ms-smb2/16693be7-2b27-4d3b-804b-f605bde5bcdd

https://learn.microsoft.com/ja-jp/openspecs/windows_protocols/ms-smb2/cb9b5d66-b6be-4d18-aa66-8784a871cc10

レスポンスであるNegotiate Protocol Responseのパケットを確認しましょう。

2.SMB31_encrypt_sign_kerb_pcapng_response.png

SMB2_ENCRYPTION_CAPABILITIESAES-128-GCMが返ってきていますね。一方SMB2_SIGNING_CAPABILITIESは返ってきていません。

これはGCMが認証付き暗号であり、データの暗号化による機密性だけでなく、メッセージ認証による完全性の両方をカバーすることができるためです。つまり、敢えて個別に署名を行う必要はないという所以は使用する暗号化アルゴリズムでカバーできているためです。

実際にパケットを確認してみると、SMB2 Transform HeaderSignatureが0でない値となっており、署名自体はされていることが分かります。また、ペイロード自体は暗号化されており、詳細は確認できないことが分かります。

3.SMB31_encrypt_sign_kerb_pcapng_署名確認.png

SMB2 NEGOTIATE Responseの詳細は以下Microsoft公式ドキュメントをご覧ください。

https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/b39f253e-4963-40df-8dff-2f9040ebbeb1

比較のため、SMB署名とSMB暗号化のどちらも行なっていない場合のパケットも確認します。

4.SMB31_unencrypt_unsign_kerb_pcapng_署名なし.png

SMB2 Transform HeaderSignatureが0埋めされた文字列であり、ペイロードの詳細も確認できることが分かります。

なお、SMB 3.1.1の場合、Session Setup ResponseおよびTree Connect RequestTree Connect Responseのパケットは署名設定が無効でも署名されます。これはSMB3.1.1の仕様です。SMB 3.1.1では事前認証の整合性によって、SMBのセッション確立と認証メッセージを改ざんするman-in-the-middle攻撃からの保護が強化されています。詳細は以下資料および、Microsoft公式ドキュメントが参考になります。

9.GregKramer__SMB_3-1-1_rev_pdf.png

抜粋 : SDC SMB 3.1.1

https://learn.microsoft.com/ja-jp/archive/blogs/openspecification/smb-3-1-1-pre-authentication-integrity-in-windows-10

SMB署名有効 × SMB暗号化有効 × SMB 3.1.1 × NTLM認証

次にNTLM認証の場合を確認します。

エクスプローラーから\\10.0.8.246\shareでアクセスします。

セッションを確認します。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436809
                   Connection ID: 239866819
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: NTLMv2
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 1
                      Open Files: 3
                      Open Other: 0
                  Connected Time: 41s
                       Idle Time: 30s
                Protocol Version: SMB3_1
          Continuously Available: No
               Is Session Signed: false
                    NetBIOS Name: -
           SMB Encryption Status: encrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: share

NTLMv2を使用していることが分かります。また、SMBの暗号化は行われ、署名はされていないようです。

この時のパケットを確認します。

5.SMB31_encrypt_sign_ntlm_署名確認.png

確かに暗号化および署名されていることが分かります。

SMB署名有効 × SMB暗号化無効 × SMB 3.1.1 × Kerberos認証

次に、SMB署名は有効でSMB暗号化が無効な設定をしている場合を確認します。

設定変更をします。

::*> cifs security modify -is-smb-encryption-required false

::*> cifs security show -fields is-smb-encryption-required, is-signing-required
vserver is-signing-required is-smb-encryption-required
------- ------------------- --------------------------
svm     true                false

この状態でエクスプローラーから\\SMB-SERVER.corp.non-97.net\shareにアクセスします。

セッションを確認します。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436814
                   Connection ID: 239866824
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: Kerberos
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 1
                      Open Files: 0
                      Open Other: 0
                  Connected Time: 4s
                       Idle Time: 4s
                Protocol Version: SMB3_1
          Continuously Available: No
               Is Session Signed: true
                    NetBIOS Name: -
           SMB Encryption Status: unencrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: share

暗号化はされていないですが、署名がされていることが分かります。

パケットを確認します。

6.SMB31_unencrypt_sign_kerb_pcapng_署名確認.png

確かに暗号化されていないですが、Session Setup ResponseおよびTree Connect RequestTree Connect Responseのパケット以外もSMB2 Transform HeaderSignatureが0でない値となっており、署名されていることが分かります。

SMB署名有効 × SMB暗号化無効 × SMB 3.1.1 × NTLM認証

次にNTLM認証の場合です。

エクスプローラーから\\10.0.8.246\shareでアクセスします。

セッションを確認します。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436815
                   Connection ID: 239866825
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: NTLMv2
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 1
                      Open Files: 2
                      Open Other: 0
                  Connected Time: 24s
                       Idle Time: 5s
                Protocol Version: SMB3_1
          Continuously Available: No
               Is Session Signed: true
                    NetBIOS Name: -
           SMB Encryption Status: unencrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: share

Kerberos認証の場合と同様で暗号化は行われず、署名だけがされている状態のようです。

署名や暗号に係るパケットの様子はKerberos認証と同様で特記事項はありません。

7.SMB31_unencrypt_sign_ntlm_pcapng_署名.png

他SMBバージョンの場合の挙動

SMB署名有効 × SMB暗号化有効 × SMB 3

他SMBバージョンの場合の挙動が気になったので確認します。

まずはSMB3の場合です。

SMB暗号化を有効化し、SMB 3.1を無効にします。

::*> cifs security modify -is-smb-encryption-required true

::*> cifs options modify -smb31-enabled false

Warning: Disabling the SMB 3.1 protocol will disconnect all SMB 3.1 clients.
Do you want to continue? {y|n}: y

::*> cifs options show -fields smb1-enabled, smb2-enabled, smb3-enabled, smb31-enabled, is-fake-open-enabled, is-large-mtu-enabled, copy-offload-enabled
vserver smb1-enabled smb2-enabled smb3-enabled smb31-enabled copy-offload-enabled is-fake-open-enabled is-large-mtu-enabled
------- ------------ ------------ ------------ ------------- -------------------- -------------------- --------------------
svm     false        true         true         false         true                 true                 true

この状態でエクスプローラーから\\SMB-SERVER.corp.non-97.net\shareにアクセスします。

セッションは以下のとおりです。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436818
                   Connection ID: 239866828
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: Kerberos
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 2
                      Open Files: 1
                      Open Other: 0
                  Connected Time: 8s
                       Idle Time: 7s
                Protocol Version: SMB3
          Continuously Available: No
               Is Session Signed: false
                    NetBIOS Name: -
           SMB Encryption Status: encrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: ipc$, share

SMB 3.1.1と同じく暗号化はされていますが、署名はされていないように見えますね。

パケットを見たところ、こちらもSMB3.1.1と同様暗号化はされ、裏側ではキチンと署名されていることが分かります。

10.SMB3_encrypt_sign_kerb_pcapng_署名確認.png

なお、SMB 3.0の場合は暗号化で使用するアルゴリズムはSMB2_ENCRYPTION_CAPABILITIESでネゴシエーションしません。Negotiate Protocol Requestのパケットを確認するとSMB2_ENCRYPTION_CAPABILITIESが存在しないことが分かります。代わりにSMB2_GLOBAL_CAP_ENCRYPTION1になっています。

11.SMB3_encrypt_sign_kerb_pcapng_と_52TTXJQ4Bd5o67En9jzPmO_md_—_20240729_amazon-fsx-for-netapp-ontap-tamperproof-snapshot_SMB2_GLOBAL_CAP_ENCRYPTION.png

使用される暗号化アルゴリズムは以下Microsoft公式ドキュメントのとおり、AES-128-CCMです。

If Connection.Dialect belongs to the SMB 3.x dialect family and Connection.ClientCapabilities includes the SMB2_GLOBAL_CAP_ENCRYPTION bit, the server MUST encrypt the message before sending, if IsEncryptionSupported is TRUE and any of the following conditions are satisfied:

  • If the message being sent is any response to a client request for which Request.IsEncrypted is TRUE.
  • If Session.EncryptData is TRUE and the response being sent is not SMB2_NEGOTIATE or SMB2 SESSION_SETUP.
  • If Session.EncryptData is FALSE, the response being sent is not SMB2_NEGOTIATE or SMB2 SESSION_SETUP or SMB2 TREE_CONNECT, and Share.EncryptData for the share associated with the TreeId in the SMB2 header of the response is TRUE.

The server MUST encrypt the message as specified in section 3.1.4.3, before sending it to the client.

[MS-SMB2]: Encrypting the Message | Microsoft Learn

The sender MUST encrypt the SMB2 message using Session.EncryptionKey. If Connection.Dialect is "3.1.1", then the cipher specified by Connection.CipherId is used. Otherwise, AES-128-CCM is used to encrypt, as specified in [RFC4309]. The sender MUST append the encrypted SMB2 message to the SMB2 TRANSFORM_HEADER and send it to the receiver.

[MS-SMB2]: Encrypting the Message | Microsoft Learn

SMB署名有効 × SMB暗号化有効 × SMB 2

次にSMB 2の場合です。

FSxN側でSMB 3を無効にします。

::*> cifs options modify -smb3-enabled false

Warning: Disabling the SMB 3.0 protocol will disconnect all SMB 3.0 and SMB 3.1 clients.
Do you want to continue? {y|n}: y

Warning: When SMB 3.0 was disabled, SMB encryption was also disabled for Vserver "svm". If you re-enable SMB 3.0 and want to enable SMB encryption, use the "vserver cifs security modify
         -is-smb-encryption-required true -vserver svm" command.

         When SMB 3.0 was disabled for Vserver "svm", the SMB 3.1 and copy offload and multichannel features were also disabled. If you re-enable SMB 3.0 and want to enable these features, specify
         "-smb31-enabled true -copy-offload-enabled true -is-multichannel-enabled true" with "-smb3-enabled true".

::*> cifs options show -fields smb1-enabled, smb2-enabled, smb3-enabled, smb31-enabled, is-fake-open-enabled, is-large-mtu-enabled, copy-offload-enabled
vserver smb1-enabled smb2-enabled smb3-enabled smb31-enabled copy-offload-enabled is-fake-open-enabled is-large-mtu-enabled
------- ------------ ------------ ------------ ------------- -------------------- -------------------- --------------------
svm     false        true         false        false         false                true                 true

::*> cifs security show -fields is-smb-encryption-required, is-signing-required
vserver is-signing-required is-smb-encryption-required
------- ------------------- --------------------------
svm     true                false

はい、SMBの暗号化はSMB 3以降の機能なので、SMB 3を無効にしたタイミングで、SMBの暗号化も無効になりました。

SMB 3が無効な状態でSMBの暗号化を有効にすることはできません。

::*> cifs security modify -is-smb-encryption-required true

Error: command failed: Cannot enable SMB encryption because SMB 3.0 is disabled for Vserver "svm". Run (privilege: advanced) "vserver cifs options modify -smb3-enabled true -vserver svm" to enable the SMB
       3.0 option.

この状態でエクスプローラーから\\SMB-SERVER.corp.non-97.net\shareにアクセスします。

セッションを見る限り署名はできていそうですね。

::*> cifs session show -instance

Vserver: svm

                            Node: FsxId0e64a4f5386f74c87-01
                      Session ID: 719450040472436821
                   Connection ID: 239866831
    Incoming Data LIF IP Address: 10.0.8.246
          Workstation IP Address: 10.0.0.139
        Authentication Mechanism: Kerberos
           User Authenticated as: domain-user
                    Windows User: CORP\Administrator
                       UNIX User: root
                     Open Shares: 1
                      Open Files: 0
                      Open Other: 0
                  Connected Time: 5s
                       Idle Time: 5s
                Protocol Version: SMB2_1
          Continuously Available: No
               Is Session Signed: true
                    NetBIOS Name: -
           SMB Encryption Status: unencrypted
               Large MTU Enabled: true
                Connection Count: 1
                   Active Shares: share

そのため、明示的にSMB署名の有効化が必要なのは、SMB 3未満で接続してくるクライアントが存在するなどがあり、SMB暗号化を有効にしていない(できない)場合と考えます。

SMB暗号化の強制化している場合はSMB署名を有効化しなくともよさそう

Amazon FSx for NetApp ONTAPにおいてSMB暗号化とSMB署名を両立できるか確認してみました。

結論、SMB暗号化の強制化している場合はSMB署名を有効化しなくともよさそうです。

とはいえ、有効にしても追加で署名されてオーバーヘッドが増えるわけでもないので、心配であれば明示的に署名設定を有効化する形でも良いとも考えています。

なお、SMB署名が有効な場合、署名されない場合と比較して少なからず負荷が増加します。注意しましょう。

SMB セッションで SMB 署名を使用すると、 Windows クライアントとのすべての SMB 通信でパフォーマンスが低下し、クライアントとサーバ( SMB サーバを含む SVM を実行しているクラスタ上のノード)の両方に影響します。

パフォーマンスへの影響は、 CPU 使用率の増加としてクライアントとサーバの両方に表示されますが、ネットワークトラフィックの量は変わりません。

パフォーマンスへの影響の程度は、実行している ONTAP 9 のバージョンによって異なります。ONTAP 9.7 以降では、新しい暗号化のオフロードアルゴリズムによって、署名済み SMB トラフィックのパフォーマンスが向上します。SMB 署名オフロードは、 SMB 署名が有効になっている場合にデフォルトで有効になります。

SMB 署名のパフォーマンスを向上させるには、 AES-NI オフロード機能が必要です。お使いのプラットフォームで AES-NI オフロードがサポートされていることを確認するには、 Hardware Universe ( HWU )を参照してください。

はるかに高速なGCMアルゴリズムをサポートするSMBバージョン3.11を使用できる場合は、さらにパフォーマンスが向上します。

ネットワーク、 ONTAP 9 のバージョン、 SMB のバージョン、および SVM の実装方法に応じて SMB 署名のパフォーマンスへの影響には幅があるため、影響の程度はご使用のネットワーク環境でのテストによってのみ検証可能です。

SMB 署名のパフォーマンスへの影響

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.